Add markup for libc++ dylib availability Libc++ is used as a system library on macOS and iOS (amongst others). In order for users to be able to compile a binary that is intended to be deployed to an older version of the platform, clang provides the availability attribute <https://clang.llvm.org/docs/AttributeReference.html#availability>_ that can be placed on declarations to describe the lifecycle of a symbol in the library. See docs/DesignDocs/AvailabilityMarkup.rst for more information. Differential Revision: https://reviews.llvm.org/D31739 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@302172 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/docs/DesignDocs/AvailabilityMarkup.rst b/docs/DesignDocs/AvailabilityMarkup.rst new file mode 100644 index 0000000..4a85c69 --- /dev/null +++ b/docs/DesignDocs/AvailabilityMarkup.rst 
@@ -0,0 +1,114 @@ +=================== +Availability Markup +=================== + +.. contents:: + :local: + +Overview +======== + +Libc++ is used as a system library on macOS and iOS (amongst others). In order +for users to be able to compile a binary that is intended to be deployed to an +older version of the platform, clang provides the +`availability attribute <https://clang.llvm.org/docs/AttributeReference.html#availability>`_ +that can be placed on declarations to describe the lifecycle of a symbol in the +library. + +Design +====== + +When a new feature is introduced that requires dylib support, a macro should be +created in include/__config to mark this feature as unavailable for all the +systems. For example:: + + // Define availability macros. + #if defined(_LIBCPP_USE_AVAILABILITY_APPLE) + #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) + #else if defined(_LIBCPP_USE_AVAILABILITY_SOME_OTHER_VENDOR) + #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) +	#else + #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS + #endif + +When the library is updated by the platform vendor, the markup can be updated. +For example:: + + #define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) + +In the source code, the macro can be added on a class if the full class requires +type info from the library for example:: + +	_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL +	class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access + : public std::logic_error { + +or on a particular symbol: + + _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz) _NOEXCEPT; + + +Testing +======= + +Some parameters can be passed to lit to run the test-suite and exercising the +availability. + +* The `platform` parameter controls the deployement target. For example lit can + be invoked with `--param=platform=macosx10.8`. Default is the current host. +* The `use_system_cxx_lib` parameter indicates to use another library than the + just built one. Invoking lit with `--param=use_system_cxx_lib=true` will run + the test-suite against the host system library. Alternatively a path to the + directory containing a specific prebuilt libc++ can be used, for example: + `--param=use_system_cxx_lib=/path/to/macOS/10.8/`. +* The `with_availability` boolean parameter enables the availability markup. + +Tests can be marked as XFAIL based on multiple features made available by lit: + + +* if either `use_system_cxx_lib` or `with_availability` is passed to lit, + assuming `--param=platform=macosx10.8` is passed as well the following + features will be available: + + - availability + - availability=x86_64 + - availability=macosx + - availability=x86_64-macosx + - availability=x86_64-apple-macosx10.8 + - availability=macosx10.8 + + This feature is used to XFAIL a test that *is* using a class of a method marked + as unavailable *and* that is expected to *fail* if deployed on an older system. + +* if `use_system_cxx_lib` is passed to lit, the following features will also + be available: + + - with_system_cxx_lib + - with_system_cxx_lib=x86_64 + - with_system_cxx_lib=macosx + - with_system_cxx_lib=x86_64-macosx + - with_system_cxx_lib=x86_64-apple-macosx10.8 + - with_system_cxx_lib=macosx10.8 + + This feature is used to XFAIL a test that is *not* using a class of a method + marked as unavailable *but* that is expected to fail if deployed on an older + system. For example if we know that it exhibits a but in the libc on a + particular system version. + +* if `with_availability` is passed to lit, the following features will also + be available: + + - availability_markup + - availability_markup=x86_64 + - availability_markup=macosx + - availability_markup=x86_64-macosx + - availability_markup=x86_64-apple-macosx10.8 + - availability_markup=macosx10.8 + + This feature is used to XFAIL a test that *is* using a class of a method + marked as unavailable *but* that is expected to *pass* if deployed on an older + system. For example if it is using a symbol in a statically evaluated context. 
diff --git a/docs/index.rst b/docs/index.rst index c4cdf3b..3526b47 100644 --- a/docs/index.rst +++ b/docs/index.rst 
@@ -128,6 +128,7 @@  .. toctree::  :maxdepth: 1   + DesignDocs/AvailabilityMarkup  DesignDocs/DebugMode  DesignDocs/CapturingConfigInfo  DesignDocs/ABIVersioning 
diff --git a/include/__config b/include/__config index 598015c..05622a4 100644 --- a/include/__config +++ b/include/__config 
@@ -1113,4 +1113,77 @@    #endif // __cplusplus   +// Decide whether to use availability macros. +#if !defined(_LIBCPP_BUILDING_LIBRARY) && \ + !defined(_LIBCPP_DISABLE_AVAILABILITY) && \ + __has_feature(attribute_availability_with_strict) && \ + __has_feature(attribute_availability_in_templates) +#ifdef __APPLE__ +#define _LIBCPP_USE_AVAILABILITY_APPLE +#endif +#endif + +// Define availability macros. +#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) +#define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +#define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) +#define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH __attribute__((unavailable)) +#define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +#define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ + __attribute__((availability(macosx,strict,introduced=10.12))) \ + __attribute__((availability(ios,strict,introduced=10.0))) \ + __attribute__((availability(tvos,strict,introduced=10.0))) \ + __attribute__((availability(watchos,strict,introduced=3.0))) +#define _LIBCPP_AVAILABILITY_FUTURE_ERROR \ + __attribute__((availability(ios,strict,introduced=6.0))) +#define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +#define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +#define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR \ + __attribute__((availability(macosx,strict,introduced=10.9))) \ + __attribute__((availability(ios,strict,introduced=7.0))) +#else +#define _LIBCPP_AVAILABILITY_SHARED_MUTEX +#define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +#define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH +#define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS +#define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE +#define _LIBCPP_AVAILABILITY_FUTURE_ERROR +#define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE +#define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY +#define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR +#endif + +// Define availability that depends on _LIBCPP_NO_EXCEPTIONS. +#ifdef _LIBCPP_NO_EXCEPTIONS +#define _LIBCPP_AVAILABILITY_DYNARRAY +#define _LIBCPP_AVAILABILITY_FUTURE +#else +#define _LIBCPP_AVAILABILITY_DYNARRAY _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH +#define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR +#endif + +// Availability of stream API in the dylib got dropped and re-added. The +// extern template should effectively be available at: +// availability(macosx,introduced=10.9) +// availability(ios,introduced=7.0) +#if defined(_LIBCPP_USE_AVAILABILITY_APPLE) && \ + ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ <= 1090) || \ + (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ + __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ <= 70000)) +#define _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE +#endif +  #endif // _LIBCPP_CONFIG 
diff --git a/include/__locale b/include/__locale index 918cd1d..4184e7e 100644 --- a/include/__locale +++ b/include/__locale 
@@ -69,6 +69,7 @@  class _LIBCPP_TYPE_VIS id;    typedef int category; + _LIBCPP_AVAILABILITY_LOCALE_CATEGORY  static const category // values assigned here are for exposition only  none = 0,  collate = LC_COLLATE_MASK, 
diff --git a/include/exception b/include/exception index f12ae42..9999ca0 100644 --- a/include/exception +++ b/include/exception 
@@ -127,7 +127,7 @@  _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void terminate() _NOEXCEPT;    _LIBCPP_FUNC_VIS bool uncaught_exception() _NOEXCEPT; -_LIBCPP_FUNC_VIS int uncaught_exceptions() _NOEXCEPT; +_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int uncaught_exceptions() _NOEXCEPT;    class _LIBCPP_TYPE_VIS exception_ptr;   
diff --git a/include/experimental/dynarray b/include/experimental/dynarray index 8c97337..f96a0e5 100644 --- a/include/experimental/dynarray +++ b/include/experimental/dynarray 
@@ -110,7 +110,7 @@  namespace std { namespace experimental { inline namespace __array_extensions_v1 {    template <class _Tp> -struct _LIBCPP_TEMPLATE_VIS dynarray +struct _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_DYNARRAY dynarray  {  public:  // types: 
diff --git a/include/experimental/optional b/include/experimental/optional index f32941b..48adfba 100644 --- a/include/experimental/optional +++ b/include/experimental/optional 
@@ -145,7 +145,7 @@  #include <stdexcept>    _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL -class _LIBCPP_EXCEPTION_ABI bad_optional_access +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access  : public std::logic_error  {  public: @@ -523,6 +523,9 @@  constexpr explicit operator bool() const noexcept {return this->__engaged_;}   	_LIBCPP_NORETURN _LIBCPP_INLINE_VISIBILITY  +#ifndef _LIBCPP_NO_EXCEPTIONS +_LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS +#endif 	constexpr void __throw_bad_optional_access() const 	{  #ifndef _LIBCPP_NO_EXCEPTIONS @@ -532,7 +535,7 @@  #endif 	}   - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS  constexpr value_type const& value() const  {  if (!this->__engaged_) @@ -540,7 +543,7 @@  return this->__val_;  }   - _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS  value_type& value()  {  if (!this->__engaged_) 
diff --git a/include/future b/include/future index 1ceedf9..e388767 100644 --- a/include/future +++ b/include/future 
@@ -499,7 +499,7 @@  return error_condition(static_cast<int>(__e), future_category());  }   -class _LIBCPP_EXCEPTION_ABI future_error +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_FUTURE_ERROR future_error  : public logic_error  {  error_code __ec_; @@ -515,6 +515,9 @@  };    _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE +#ifndef _LIBCPP_NO_EXCEPTIONS +_LIBCPP_AVAILABILITY_FUTURE_ERROR +#endif  void __throw_future_error(future_errc _Ev)  {  #ifndef _LIBCPP_NO_EXCEPTIONS @@ -525,7 +528,7 @@  #endif  }   -class _LIBCPP_TYPE_VIS __assoc_sub_state +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE __assoc_sub_state  : public __shared_count  {  protected: @@ -612,7 +615,7 @@  }    template <class _Rp> -class __assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state  : public __assoc_sub_state  {  typedef __assoc_sub_state base; @@ -652,6 +655,7 @@    template <class _Rp>  template <class _Arg> +_LIBCPP_AVAILABILITY_FUTURE  void  #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES  __assoc_state<_Rp>::set_value(_Arg&& __arg) @@ -707,7 +711,7 @@  }    template <class _Rp> -class __assoc_state<_Rp&> +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state<_Rp&>  : public __assoc_sub_state  {  typedef __assoc_sub_state base; @@ -767,7 +771,7 @@  }    template <class _Rp, class _Alloc> -class __assoc_state_alloc +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state_alloc  : public __assoc_state<_Rp>  {  typedef __assoc_state<_Rp> base; @@ -795,7 +799,7 @@  }    template <class _Rp, class _Alloc> -class __assoc_state_alloc<_Rp&, _Alloc> +class _LIBCPP_AVAILABILITY_FUTURE __assoc_state_alloc<_Rp&, _Alloc>  : public __assoc_state<_Rp&>  {  typedef __assoc_state<_Rp&> base; @@ -821,7 +825,7 @@  }    template <class _Alloc> -class __assoc_sub_state_alloc +class _LIBCPP_AVAILABILITY_FUTURE __assoc_sub_state_alloc  : public __assoc_sub_state  {  typedef __assoc_sub_state base; @@ -847,7 +851,7 @@  }    template <class _Rp, class _Fp> -class __deferred_assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __deferred_assoc_state  : public __assoc_state<_Rp>  {  typedef __assoc_state<_Rp> base; @@ -894,7 +898,7 @@  }    template <class _Fp> -class __deferred_assoc_state<void, _Fp> +class _LIBCPP_AVAILABILITY_FUTURE __deferred_assoc_state<void, _Fp>  : public __assoc_sub_state  {  typedef __assoc_sub_state base; @@ -942,7 +946,7 @@  }    template <class _Rp, class _Fp> -class __async_assoc_state +class _LIBCPP_AVAILABILITY_FUTURE __async_assoc_state  : public __assoc_state<_Rp>  {  typedef __assoc_state<_Rp> base; @@ -997,7 +1001,7 @@  }    template <class _Fp> -class __async_assoc_state<void, _Fp> +class _LIBCPP_AVAILABILITY_FUTURE __async_assoc_state<void, _Fp>  : public __assoc_sub_state  {  typedef __assoc_sub_state base; @@ -1076,7 +1080,7 @@  #endif    template <class _Rp> -class _LIBCPP_TEMPLATE_VIS future +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE future  {  __assoc_state<_Rp>* __state_;   @@ -1179,7 +1183,7 @@  }    template <class _Rp> -class _LIBCPP_TEMPLATE_VIS future<_Rp&> +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE future<_Rp&>  {  __assoc_state<_Rp&>* __state_;   @@ -1277,7 +1281,7 @@  }    template <> -class _LIBCPP_TYPE_VIS future<void> +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE future<void>  {  __assoc_sub_state* __state_;   @@ -1360,7 +1364,7 @@  template <class _Callable> class packaged_task;    template <class _Rp> -class _LIBCPP_TEMPLATE_VIS promise +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE promise  {  __assoc_state<_Rp>* __state_;   @@ -1527,7 +1531,7 @@  // promise<R&>    template <class _Rp> -class _LIBCPP_TEMPLATE_VIS promise<_Rp&> +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE promise<_Rp&>  {  __assoc_state<_Rp&>* __state_;   @@ -1663,7 +1667,7 @@  // promise<void>    template <> -class _LIBCPP_TYPE_VIS promise<void> +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE promise<void>  {  __assoc_sub_state* __state_;   @@ -1749,7 +1753,7 @@  template<class _Fp> class __packaged_task_base;    template<class _Rp, class ..._ArgTypes> -class __packaged_task_base<_Rp(_ArgTypes...)> +class _LIBCPP_AVAILABILITY_FUTURE __packaged_task_base<_Rp(_ArgTypes...)>  {  __packaged_task_base(const __packaged_task_base&);  __packaged_task_base& operator=(const __packaged_task_base&); @@ -1767,7 +1771,7 @@  template<class _FD, class _Alloc, class _FB> class __packaged_task_func;    template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes> -class __packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)> +class _LIBCPP_AVAILABILITY_FUTURE __packaged_task_func<_Fp, _Alloc, _Rp(_ArgTypes...)>  : public __packaged_task_base<_Rp(_ArgTypes...)>  {  __compressed_pair<_Fp, _Alloc> __f_; @@ -1825,7 +1829,7 @@  template <class _Callable> class __packaged_task_function;    template<class _Rp, class ..._ArgTypes> -class __packaged_task_function<_Rp(_ArgTypes...)> +class _LIBCPP_AVAILABILITY_FUTURE __packaged_task_function<_Rp(_ArgTypes...)>  {  typedef __packaged_task_base<_Rp(_ArgTypes...)> __base;  typename aligned_storage<3*sizeof(void*)>::type __buf_; @@ -2000,7 +2004,7 @@  }    template<class _Rp, class ..._ArgTypes> -class _LIBCPP_TEMPLATE_VIS packaged_task<_Rp(_ArgTypes...)> +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE packaged_task<_Rp(_ArgTypes...)>  {  public:  typedef _Rp result_type; // extension @@ -2129,7 +2133,7 @@  }    template<class ..._ArgTypes> -class _LIBCPP_TEMPLATE_VIS packaged_task<void(_ArgTypes...)> +class _LIBCPP_TEMPLATE_VIS _LIBCPP_AVAILABILITY_FUTURE packaged_task<void(_ArgTypes...)>  {  public:  typedef void result_type; // extension @@ -2517,7 +2521,7 @@  }    template <> -class _LIBCPP_TYPE_VIS shared_future<void> +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_FUTURE shared_future<void>  {  __assoc_sub_state* __state_;   
diff --git a/include/istream b/include/istream index 9a8bb44..530f204 100644 --- a/include/istream +++ b/include/istream 
@@ -1675,9 +1675,11 @@  return __is;  }   +#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<char>)  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_istream<wchar_t>)  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_iostream<char>) +#endif    _LIBCPP_END_NAMESPACE_STD   
diff --git a/include/memory b/include/memory index a02d61c..41ab01b 100644 --- a/include/memory +++ b/include/memory 
@@ -5293,7 +5293,8 @@  friend _LIBCPP_FUNC_VIS __sp_mut& __get_sp_mut(const void*);  };   -_LIBCPP_FUNC_VIS __sp_mut& __get_sp_mut(const void*); +_LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR +__sp_mut& __get_sp_mut(const void*);    template <class _Tp>  inline _LIBCPP_INLINE_VISIBILITY @@ -5304,6 +5305,7 @@  }    template <class _Tp> +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  shared_ptr<_Tp>  atomic_load(const shared_ptr<_Tp>* __p)  { @@ -5316,6 +5318,7 @@    template <class _Tp>  inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  shared_ptr<_Tp>  atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order)  { @@ -5323,6 +5326,7 @@  }    template <class _Tp> +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  void  atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)  { @@ -5334,6 +5338,7 @@    template <class _Tp>  inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  void  atomic_store_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order)  { @@ -5341,6 +5346,7 @@  }    template <class _Tp> +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  shared_ptr<_Tp>  atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r)  { @@ -5353,6 +5359,7 @@    template <class _Tp>  inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  shared_ptr<_Tp>  atomic_exchange_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r, memory_order)  { @@ -5360,6 +5367,7 @@  }    template <class _Tp> +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  bool  atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w)  { @@ -5381,6 +5389,7 @@    template <class _Tp>  inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  bool  atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v, shared_ptr<_Tp> __w)  { @@ -5389,6 +5398,7 @@    template <class _Tp>  inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  bool  atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,  shared_ptr<_Tp> __w, memory_order, memory_order) @@ -5398,6 +5408,7 @@    template <class _Tp>  inline _LIBCPP_INLINE_VISIBILITY +_LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR  bool  atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, shared_ptr<_Tp>* __v,  shared_ptr<_Tp> __w, memory_order, memory_order) 
diff --git a/include/new b/include/new index c0e7b2d..34df2ef 100644 --- a/include/new +++ b/include/new 
@@ -146,9 +146,8 @@    #if defined(_LIBCPP_BUILDING_LIBRARY) || (_LIBCPP_STD_VER > 11)   -class _LIBCPP_EXCEPTION_ABI bad_array_length - : public bad_alloc -{ +class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH + bad_array_length : public bad_alloc {  public:  bad_array_length() _NOEXCEPT;  virtual ~bad_array_length() _NOEXCEPT; @@ -182,7 +181,7 @@  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p) _NOEXCEPT;  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;  #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::size_t __sz) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz) _NOEXCEPT;  #endif    _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz) _THROW_BAD_ALLOC; @@ -190,7 +189,7 @@  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p) _NOEXCEPT;  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;  #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT;  #endif    #ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION @@ -199,7 +198,7 @@  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t) _NOEXCEPT;  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;  #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;  #endif    _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC; @@ -207,7 +206,7 @@  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t) _NOEXCEPT;  _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT;  #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION -_LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; +_LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT;  #endif  #endif   @@ -238,6 +237,9 @@    #ifdef _LIBCPP_BAD_ARRAY_LENGTH_DEFINED  _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE +#ifndef _LIBCPP_NO_EXCEPTIONS +_LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH +#endif  void __throw_bad_array_length()  {  #ifndef _LIBCPP_NO_EXCEPTIONS 
diff --git a/include/ostream b/include/ostream index ca2c83f..9bf8d3c 100644 --- a/include/ostream +++ b/include/ostream 
@@ -1080,8 +1080,10 @@  use_facet<ctype<_CharT> >(__os.getloc()).widen('1'));  }   +#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>)  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>) +#endif    _LIBCPP_END_NAMESPACE_STD   
diff --git a/include/shared_mutex b/include/shared_mutex index f2fd667..b0802ae 100644 --- a/include/shared_mutex +++ b/include/shared_mutex 
@@ -141,7 +141,7 @@    _LIBCPP_BEGIN_NAMESPACE_STD   -struct _LIBCPP_TYPE_VIS __shared_mutex_base +struct _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX __shared_mutex_base  {  mutex __mut_;  condition_variable __gate1_; @@ -173,7 +173,7 @@      #if _LIBCPP_STD_VER > 14 -class _LIBCPP_TYPE_VIS shared_mutex +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX shared_mutex  {  __shared_mutex_base __base;  public: @@ -199,7 +199,7 @@  #endif     -class _LIBCPP_TYPE_VIS shared_timed_mutex +class _LIBCPP_TYPE_VIS _LIBCPP_AVAILABILITY_SHARED_MUTEX shared_timed_mutex  {  __shared_mutex_base __base;  public: 
diff --git a/include/streambuf b/include/streambuf index 8607065..12eded5 100644 --- a/include/streambuf +++ b/include/streambuf 
@@ -476,11 +476,13 @@  return traits_type::eof();  }   +#ifndef _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<char>)  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_streambuf<wchar_t>)    _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ios<char>)  _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ios<wchar_t>) +#endif    _LIBCPP_END_NAMESPACE_STD   
diff --git a/include/typeinfo b/include/typeinfo index 4145ac1..8624b34 100644 --- a/include/typeinfo +++ b/include/typeinfo 
@@ -108,6 +108,7 @@  #endif    public: + _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE  virtual ~type_info();    #if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO) 
diff --git a/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp b/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp index c84960f..a0b35f3 100644 --- a/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp 
@@ -8,6 +8,8 @@  //===----------------------------------------------------------------------===//    // <list> +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib    // list(list&& c);   
diff --git a/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp b/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp index dd424e8..570e5a0 100644 --- a/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp 
@@ -9,6 +9,9 @@    // UNSUPPORTED: c++98, c++03   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // list(list&& c); 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp index 1d64f9b..67146bc 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/emplace_db1.pass.cpp 
@@ -9,6 +9,9 @@    // UNSUPPORTED: c++98, c++03   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // template <class... Args> void emplace(const_iterator p, Args&&... args); 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp index ec5de02..24cadbe 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db1.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // Call erase(const_iterator position) with end() 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp index 833e2b5..6d3e761 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_db2.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // Call erase(const_iterator position) with iterator from another container 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp index eef7a98..dd592f9 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db1.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // Call erase(const_iterator first, const_iterator last); with first iterator from another container 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp index 0dd03dc..d5e8fd9 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db2.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // Call erase(const_iterator first, const_iterator last); with second iterator from another container 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp index 22273a8..3ae20cd 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db3.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // Call erase(const_iterator first, const_iterator last); with both iterators from another container 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp index d1e03c8..6d6e29e 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/erase_iter_iter_db4.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // Call erase(const_iterator first, const_iterator last); with a bad range 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp index 7fadb14..03b9667 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_iter_iter_db1.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // template <InputIterator Iter> 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp index 0d0fd10..589af7c 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_rvalue_db1.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // iterator insert(const_iterator position, value_type&& x); 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp index 4fdfbfa..6999c40 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_size_value_db1.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // iterator insert(const_iterator position, size_type n, const value_type& x); 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp index 9a13520..66983f0 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/insert_iter_value_db1.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // iterator insert(const_iterator position, const value_type& x); 
diff --git a/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp b/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp index 795e66d..9151fc1 100644 --- a/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.modifiers/pop_back_db1.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // void pop_back(); 
diff --git a/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp b/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp index 7a1180a..541dd05 100644 --- a/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // void splice(const_iterator position, list& x); 
diff --git a/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp b/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp index fa5243e..64ef78e 100644 --- a/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // void splice(const_iterator position, list<T,Allocator>& x, iterator i); 
diff --git a/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp b/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp index a385b4c..9fed4b5 100644 --- a/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp +++ b/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // <list>    // void splice(const_iterator position, list& x, iterator first, iterator last); 
diff --git a/test/libcxx/debug/containers/db_associative_container_tests.pass.cpp b/test/libcxx/debug/containers/db_associative_container_tests.pass.cpp index 91cdf85..a727b31 100644 --- a/test/libcxx/debug/containers/db_associative_container_tests.pass.cpp +++ b/test/libcxx/debug/containers/db_associative_container_tests.pass.cpp 
@@ -12,6 +12,9 @@  // MODULES_DEFINES: _LIBCPP_DEBUG=1  // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // test container debugging    #define _LIBCPP_DEBUG 1 
diff --git a/test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp b/test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp index 6e2fb7b..3ae009a 100644 --- a/test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp +++ b/test/libcxx/debug/containers/db_sequence_container_iterators.pass.cpp 
@@ -12,6 +12,9 @@  // MODULES_DEFINES: _LIBCPP_DEBUG=1  // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // test container debugging    #define _LIBCPP_DEBUG 1 
diff --git a/test/libcxx/debug/containers/db_string.pass.cpp b/test/libcxx/debug/containers/db_string.pass.cpp index 8d1a622..f6434d5 100644 --- a/test/libcxx/debug/containers/db_string.pass.cpp +++ b/test/libcxx/debug/containers/db_string.pass.cpp 
@@ -12,6 +12,9 @@  // MODULES_DEFINES: _LIBCPP_DEBUG=1  // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // test container debugging    #define _LIBCPP_DEBUG 1 
diff --git a/test/libcxx/debug/containers/db_unord_container_tests.pass.cpp b/test/libcxx/debug/containers/db_unord_container_tests.pass.cpp index 5618607..d6a31e3 100644 --- a/test/libcxx/debug/containers/db_unord_container_tests.pass.cpp +++ b/test/libcxx/debug/containers/db_unord_container_tests.pass.cpp 
@@ -12,6 +12,9 @@  // MODULES_DEFINES: _LIBCPP_DEBUG=1  // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // test container debugging    #define _LIBCPP_DEBUG 1 
diff --git a/test/libcxx/debug/debug_abort.pass.cpp b/test/libcxx/debug/debug_abort.pass.cpp index b6e7b0b..9a1b475 100644 --- a/test/libcxx/debug/debug_abort.pass.cpp +++ b/test/libcxx/debug/debug_abort.pass.cpp 
@@ -10,6 +10,9 @@    // MODULES_DEFINES: _LIBCPP_DEBUG=0   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // Test that the default debug handler aborts the program.    #define _LIBCPP_DEBUG 0 
diff --git a/test/libcxx/debug/debug_throw.pass.cpp b/test/libcxx/debug/debug_throw.pass.cpp index 716750c..d1c8840 100644 --- a/test/libcxx/debug/debug_throw.pass.cpp +++ b/test/libcxx/debug/debug_throw.pass.cpp 
@@ -11,6 +11,9 @@  // UNSUPPORTED: libcpp-no-exceptions  // MODULES_DEFINES: _LIBCPP_DEBUG=0   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // Test that the default debug handler can be overridden and test the  // throwing debug handler.   
diff --git a/test/libcxx/debug/debug_throw_register.pass.cpp b/test/libcxx/debug/debug_throw_register.pass.cpp index ec4be70..0d2586b 100644 --- a/test/libcxx/debug/debug_throw_register.pass.cpp +++ b/test/libcxx/debug/debug_throw_register.pass.cpp 
@@ -12,6 +12,9 @@  // MODULES_DEFINES: _LIBCPP_DEBUG=1  // MODULES_DEFINES: _LIBCPP_DEBUG_USE_EXCEPTIONS   +// Can't test the system lib because this test enables debug mode +// UNSUPPORTED: with_system_cxx_lib +  // Test that defining _LIBCPP_DEBUG_USE_EXCEPTIONS causes _LIBCPP_ASSERT  // to throw on failure.   
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp index 14f5c4e..db7484d 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default.pass.cpp 
@@ -8,6 +8,12 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7    // dynarray.cons   
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp index 8d7d28b..9c6cad8 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.cons/default_throws_bad_alloc.pass.cpp 
@@ -8,6 +8,7 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: availability  // dynarray.cons    // explicit dynarray(size_type c); 
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp index 84c6029..5c745e0 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.data/default.pass.cpp 
@@ -8,6 +8,7 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability    // dynarray.data   
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp index 376c94a..1ed5153 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.mutate/default.pass.cpp 
@@ -8,6 +8,8 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability +  // dynarray.data    // void fill(const T& v); 
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp index ef9be45..473313f 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/at.pass.cpp 
@@ -9,6 +9,8 @@    // UNSUPPORTED: c++98, c++03, c++11  // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: availability +  // dynarray.overview    // const_reference at(size_type n) const; 
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp index 38aefdf..f0aa1e3 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/begin_end.pass.cpp 
@@ -8,6 +8,8 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability +  // dynarray.overview     
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp index 95262aa..a548429 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/capacity.pass.cpp 
@@ -8,6 +8,8 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability +  // dynarray.overview    // size_type size() const noexcept; 
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp index 4f1d097..0ba27cf 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/front_back.pass.cpp 
@@ -8,6 +8,7 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability    // dynarray.overview   
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp index 4bcb229..4306d1e 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.overview/indexing.pass.cpp 
@@ -8,6 +8,14 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 + +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 +  // dynarray.overview    // const_reference at(size_type n) const; 
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp index c0e0180..ab49600 100644 --- a/test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp +++ b/test/libcxx/experimental/containers/sequences/dynarray/dynarray.zero/default.pass.cpp 
@@ -8,6 +8,7 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability  // dynarray.zero    // dynarray shall provide support for the special case of construction with a size of zero. 
diff --git a/test/libcxx/experimental/containers/sequences/dynarray/lit.local.cfg b/test/libcxx/experimental/containers/sequences/dynarray/lit.local.cfg new file mode 100644 index 0000000..93553b5 --- /dev/null +++ b/test/libcxx/experimental/containers/sequences/dynarray/lit.local.cfg 
@@ -0,0 +1,3 @@ +if ('availability' in config.available_features + and not 'libcpp-no-exceptions' in config.available_features): + config.unsupported = True 
diff --git a/test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp b/test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp index cc99b83..c37d234 100644 --- a/test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp +++ b/test/libcxx/language.support/support.dynamic/alloc.errors/new.badlength/bad_array_length.pass.cpp 
@@ -8,6 +8,15 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability + +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 +  // test bad_array_length    #include <new> 
diff --git a/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp b/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp index 8c17aab..388fbeb 100644 --- a/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp +++ b/test/libcxx/language.support/support.dynamic/new_faligned_allocation.sh.cpp 
@@ -16,6 +16,13 @@    // REQUIRES: -faligned-allocation   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // RUN: %build -faligned-allocation  // RUN: %run   
diff --git a/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp b/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp index dda19a9..c829a97 100644 --- a/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp +++ b/test/std/depr/depr.str.strstreams/depr.strstreambuf/depr.strstreambuf.members/overflow.pass.cpp 
@@ -9,6 +9,10 @@    // <strstream>   +// There was an overflow in the dylib on older macOS versions +// UNSUPPORTED: availability=macosx10.8 +// UNSUPPORTED: availability=macosx10.7 +  // class strstreambuf    // int overflow(int c); 
diff --git a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp index 65ecc49..8ddd648 100644 --- a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp +++ b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/generic_category.pass.cpp 
@@ -7,6 +7,13 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <system_error>    // class error_category 
diff --git a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp index d1a9488..cbc42f8 100644 --- a/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp +++ b/test/std/diagnostics/syserr/syserr.errcat/syserr.errcat.objects/system_category.pass.cpp 
@@ -13,6 +13,13 @@    // const error_category& system_category();   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  #include <system_error>  #include <cassert>  #include <string> 
diff --git a/test/std/experimental/any/any.class/any.assign/copy.pass.cpp b/test/std/experimental/any/any.class/any.assign/copy.pass.cpp index 17b01fe..7140fab 100644 --- a/test/std/experimental/any/any.class/any.assign/copy.pass.cpp +++ b/test/std/experimental/any/any.class/any.assign/copy.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // any& operator=(any const &); 
diff --git a/test/std/experimental/any/any.class/any.assign/move.pass.cpp b/test/std/experimental/any/any.class/any.assign/move.pass.cpp index 49508fe..35fc56c 100644 --- a/test/std/experimental/any/any.class/any.assign/move.pass.cpp +++ b/test/std/experimental/any/any.class/any.assign/move.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // any& operator=(any &&); 
diff --git a/test/std/experimental/any/any.class/any.assign/value.pass.cpp b/test/std/experimental/any/any.class/any.assign/value.pass.cpp index b42a4ba..8ff4ad5 100644 --- a/test/std/experimental/any/any.class/any.assign/value.pass.cpp +++ b/test/std/experimental/any/any.class/any.assign/value.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // any& operator=(any const &); @@ -174,4 +181,4 @@  test_assign_throws<small_throws_on_copy>();  test_assign_throws<large_throws_on_copy>();  test_assign_throws<throws_on_move, /* Move = */ true>(); -} \ No newline at end of file +} 
diff --git a/test/std/experimental/any/any.class/any.cons/copy.pass.cpp b/test/std/experimental/any/any.class/any.cons/copy.pass.cpp index 69341ca..47f12d7 100644 --- a/test/std/experimental/any/any.class/any.cons/copy.pass.cpp +++ b/test/std/experimental/any/any.class/any.cons/copy.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // any(any const &); 
diff --git a/test/std/experimental/any/any.class/any.cons/move.pass.cpp b/test/std/experimental/any/any.class/any.cons/move.pass.cpp index 2a05094..c5395da 100644 --- a/test/std/experimental/any/any.class/any.cons/move.pass.cpp +++ b/test/std/experimental/any/any.class/any.cons/move.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // any(any &&) noexcept; 
diff --git a/test/std/experimental/any/any.class/any.cons/value.pass.cpp b/test/std/experimental/any/any.class/any.cons/value.pass.cpp index a3ab0ed..fcace50 100644 --- a/test/std/experimental/any/any.class/any.cons/value.pass.cpp +++ b/test/std/experimental/any/any.class/any.cons/value.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // template <class Value> any(Value &&) @@ -113,4 +120,4 @@  test_copy_value_throws<small_throws_on_copy>();  test_copy_value_throws<large_throws_on_copy>();  test_move_value_throws(); -} \ No newline at end of file +} 
diff --git a/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp b/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp index 781ed73..1b0b75d 100644 --- a/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp +++ b/test/std/experimental/any/any.class/any.modifiers/clear.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // any::clear() noexcept 
diff --git a/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp b/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp index b1d3154..9f499b4 100644 --- a/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp +++ b/test/std/experimental/any/any.class/any.modifiers/swap.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <experimental/any>    // any::swap(any &) noexcept 
diff --git a/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp b/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp index 47fe52f..ca6d1de 100644 --- a/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ b/test/std/experimental/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp 
@@ -9,6 +9,8 @@    // UNSUPPORTED: c++98, c++03, c++11   +// XFAIL: availability=macosx +  // <experimental/any>    // template <class ValueType> 
diff --git a/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp b/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp index c6cc68d..1c52a64 100644 --- a/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp +++ b/test/std/experimental/any/any.nonmembers/any.cast/not_copy_constructible.fail.cpp 
@@ -42,4 +42,4 @@  any_cast<no_copy>(static_cast<any &&>(a));  // expected-error@experimental/any:* 3 {{static_assert failed "_ValueType is required to be a reference or a CopyConstructible type."}}  // expected-error@experimental/any:* 3 {{calling a private constructor of class 'no_copy'}} -} \ No newline at end of file +} 
diff --git a/test/std/experimental/any/any.nonmembers/swap.pass.cpp b/test/std/experimental/any/any.nonmembers/swap.pass.cpp index a3fbd43..e79bc9e 100644 --- a/test/std/experimental/any/any.nonmembers/swap.pass.cpp +++ b/test/std/experimental/any/any.nonmembers/swap.pass.cpp 
@@ -34,7 +34,8 @@    swap(a1, a2);   - assert(any_cast<int>(a1) == 2); - assert(any_cast<int>(a2) == 1); + // Support testing against system dylibs that don't have bad_any_cast. + assert(*any_cast<int>(&a1) == 2); + assert(*any_cast<int>(&a2) == 1);  }  } 
diff --git a/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp b/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp index c166bb7..f269149 100644 --- a/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp +++ b/test/std/experimental/optional/optional.bad_optional_access/default.pass.cpp 
@@ -8,6 +8,12 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7    // <optional>   
diff --git a/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp b/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp index 4630165..a4af713 100644 --- a/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp +++ b/test/std/experimental/optional/optional.bad_optional_access/derive.pass.cpp 
@@ -8,6 +8,12 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability_markup=macosx10.12 +// XFAIL: availability_markup=macosx10.11 +// XFAIL: availability_markup=macosx10.10 +// XFAIL: availability_markup=macosx10.9 +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7    // <optional>   
diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp index c8f0711..72d7790 100644 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp +++ b/test/std/experimental/optional/optional.object/optional.object.observe/value.pass.cpp 
@@ -8,6 +8,13 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 +  // <optional>    // T& optional<T>::value(); 
diff --git a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp b/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp index 98ff16e..b3d6dfd 100644 --- a/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ b/test/std/experimental/optional/optional.object/optional.object.observe/value_const.pass.cpp 
@@ -8,6 +8,13 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11 +// XFAIL: availability=macosx10.12 +// XFAIL: availability=macosx10.11 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.7 +  // <optional>    // constexpr const T& optional<T>::value() const; 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp index 52b3566..eda490f 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.formatted/istream.formatted.arithmetic/pointer.pass.cpp 
@@ -7,6 +7,10 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +  // <istream>    // template <class charT, class traits = char_traits<charT> > 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp index 0f356e2..c7f16ca 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get.pass.cpp 
@@ -7,6 +7,8 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <istream>    // int_type get(); 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp index cf06e34..b3d3c69 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/get_chart.pass.cpp 
@@ -7,6 +7,8 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <istream>    // basic_istream<charT,traits>& get(char_type& c); 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp index 3095712..3a37cff 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/ignore_0xff.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <istream>    // basic_istream<charT,traits>& 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp index 20e70cf..ceef0d2 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/read.pass.cpp 
@@ -7,6 +7,8 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <istream>    // basic_istream<charT,traits>& read(char_type* s, streamsize n); 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp index 01eecb5..a0a8e2f 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/readsome.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <istream>    // streamsize readsome(char_type* s, streamsize n); 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp index dc4e0ba..e370b4b 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg.pass.cpp 
@@ -7,6 +7,9 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <istream>    // basic_istream<charT,traits>& seekg(pos_type pos); 
diff --git a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp index 818d42c..cac1e39 100644 --- a/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp +++ b/test/std/input.output/iostream.format/input.streams/istream.unformatted/seekg_off.pass.cpp 
@@ -7,6 +7,13 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <istream>    // basic_istream<charT,traits>& seekg(off_type off, ios_base::seekdir dir); 
diff --git a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp index e09c0ed..54c8a28 100644 --- a/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp +++ b/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/minus1.pass.cpp 
@@ -7,6 +7,8 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.12 +  // <ostream>    // template <class charT, class traits = char_traits<charT> > 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp index c88e5b0..d05f631 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/delete_align_val_t_replace.pass.cpp 
@@ -12,11 +12,18 @@  // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14    // Older Clang versions do not support this -// XFAIL: clang-3, apple-clang +// XFAIL: clang-3, apple-clang-7, apple-clang-8    // None of the current GCC compilers support this.  // XFAIL: gcc   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  #include <new>  #include <cstddef>  #include <cstdlib> 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp index 55c26fa..f5e96e2 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t.pass.cpp 
@@ -15,6 +15,13 @@  // FIXME change this to XFAIL.  // UNSUPPORTED: no-aligned-allocation   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // test operator new    #include <new> 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp index ec5d0a4..8176d0b 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow.pass.cpp 
@@ -15,6 +15,13 @@  // FIXME turn this into an XFAIL  // UNSUPPORTED: no-aligned-allocation   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // test operator new (nothrow)    #include <new> 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp index 03e490e..6fbb409 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/new_align_val_t_nothrow_replace.pass.cpp 
@@ -10,6 +10,13 @@  // UNSUPPORTED: c++98, c++03, c++11, c++14  // UNSUPPORTED: sanitizer-new-delete   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // XFAIL: no-aligned-allocation    // test operator new nothrow by replacing only operator new 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp index 5b93540..f71cf19 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array_fsizeddeallocation.sh.cpp 
@@ -13,6 +13,12 @@  // when sized deallocation is not supported, e.g., prior to C++14.    // UNSUPPORTED: sanitizer-new-delete +// XFAIL: availability_markup=macosx10.11 +// XFAIL: availability_markup=macosx10.10 +// XFAIL: availability_markup=macosx10.9 +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7 +    // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation.  // REQUIRES: fsized-deallocation 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp index a5d4df3..24a2990 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/delete_align_val_t_replace.pass.cpp 
@@ -10,13 +10,18 @@  // test aligned operator delete replacement.    // UNSUPPORTED: sanitizer-new-delete, c++98, c++03, c++11, c++14 -  // Older Clang versions do not support this -// XFAIL: clang-3, apple-clang +// XFAIL: clang-3, apple-clang-7, apple-clang-8    // None of the current GCC compilers support this.  // XFAIL: gcc   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    #include <new>  #include <cstddef> 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp index 5ebbc8a..1196996 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // asan and msan will not call the new handler.  // UNSUPPORTED: sanitizer-new-delete   
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp index 6e2eca3..d3cc0be 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // asan and msan will not call the new handler.  // UNSUPPORTED: sanitizer-new-delete   
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp index 9f64c97..8031100 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/new_align_val_t_nothrow_replace.pass.cpp 
@@ -10,6 +10,13 @@  // UNSUPPORTED: c++98, c++03, c++11, c++14  // UNSUPPORTED: sanitizer-new-delete   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // XFAIL: no-aligned-allocation    // test operator new nothrow by replacing only operator new 
diff --git a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp index 61fca5f..40de3a0 100644 --- a/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp +++ b/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete_fsizeddeallocation.sh.cpp 
@@ -13,6 +13,11 @@  // when sized deallocation is not supported, e.g., prior to C++14.    // UNSUPPORTED: sanitizer-new-delete +// XFAIL: availability_markup=macosx10.11 +// XFAIL: availability_markup=macosx10.10 +// XFAIL: availability_markup=macosx10.9 +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7    // NOTE: Only clang-3.7 and GCC 5.1 and greater support -fsized-deallocation.  // REQUIRES: fsized-deallocation 
diff --git a/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp b/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp index b926715..e35e7af 100644 --- a/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp +++ b/test/std/language.support/support.exception/uncaught/uncaught_exceptions.pass.cpp 
@@ -8,6 +8,14 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: libcpp-no-exceptions + +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8 +// XFAIL: availability=macosx10.9 +// XFAIL: availability=macosx10.10 +// XFAIL: availability=macosx10.11 +  // test uncaught_exceptions    #include <exception> 
diff --git a/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp b/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp index 2e2e973..06c171f 100644 --- a/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp 
@@ -9,8 +9,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <locale>   
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp index 94e4530..a9a8720 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp 
@@ -15,9 +15,6 @@    // charT tolower(charT) const;   -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -  #include <locale>  #include <cassert>   
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp index d97dc57..67fe449 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp 
@@ -15,9 +15,6 @@    // const charT* tolower(charT* low, const charT* high) const;   -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -  #include <locale>  #include <string>  #include <cassert> 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp index d2ad328..271ae2c 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp 
@@ -15,9 +15,6 @@    // charT toupper(charT) const;   -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -    #include <locale>  #include <cassert> 
diff --git a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp index 9ed3d13..6507135 100644 --- a/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp +++ b/test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp 
@@ -15,9 +15,6 @@    // const charT* toupper(charT* low, const charT* high) const;   -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -  #include <locale>  #include <string>  #include <cassert> 
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp index ec563fe..7776c67 100644 --- a/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp +++ b/test/std/localization/locale.categories/category.monetary/locale.money.get/locale.money.get.members/get_long_double_ru_RU.pass.cpp 
@@ -7,7 +7,8 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: apple-darwin +// This test is passing in an uncontrolled manner in some Apple environment. +// UNSUPPORTED: apple-darwin    // Failure related to GLIBC's use of U00A0 as mon_thousands_sep  // and U002E as mon_decimal_point. 
diff --git a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp index 54bfcfb..4d805b0 100644 --- a/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp +++ b/test/std/localization/locale.categories/category.monetary/locale.money.put/locale.money.put.members/put_long_double_ru_RU.pass.cpp 
@@ -7,7 +7,8 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: apple-darwin +// This test is passing in an uncontrolled manner in some Apple environment. +// UNSUPPORTED: apple-darwin    // Failure related to GLIBC's use of U00A0 as mon_thousands_sep  // and U002E as mon_decimal_point. 
diff --git a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp index 72e351f..323d856 100644 --- a/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp +++ b/test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp 
@@ -9,8 +9,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <locale>   
diff --git a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp index 272199b..e3367b2 100644 --- a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp +++ b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp 
@@ -7,8 +7,10 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7 +// PR15445 +// XFAIL: with_system_cxx_lib=macosx10.8    // <locale>   
diff --git a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp index d01f63d..174312d 100644 --- a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp +++ b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_float.pass.cpp 
@@ -6,6 +6,9 @@  // Source Licenses. See LICENSE.TXT for details.  //  //===----------------------------------------------------------------------===// +// +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7    // <locale>   @@ -194,4 +197,16 @@  assert(v == -HUGE_VALF);    } + { + v = -1; + const char str[] = "2-"; + std::ios_base::iostate err = ios.goodbit; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+1); + assert(err == ios.goodbit); + assert(v == 2); + }  } 
diff --git a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp index b79650b..cf671b0 100644 --- a/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp +++ b/test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_long_double.pass.cpp 
@@ -6,6 +6,9 @@  // Source Licenses. See LICENSE.TXT for details.  //  //===----------------------------------------------------------------------===// +// +// PR11871 +// XFAIL: with_system_cxx_lib=macosx10.7    // <locale>   @@ -253,4 +256,16 @@  assert(err == ios.failbit);  assert(v == -HUGE_VALL);  } + { + v = -1; + const char str[] = "2-"; + std::ios_base::iostate err = ios.goodbit; + input_iterator<const char*> iter = + f.get(input_iterator<const char*>(str), + input_iterator<const char*>(str+sizeof(str)), + ios, err, v); + assert(iter.base() == str+1); + assert(err == ios.goodbit); + assert(v == 2); + }  } 
diff --git a/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp index eb381f9..e25fe38 100644 --- a/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp +++ b/test/std/localization/locales/locale/locale.cons/locale_char_pointer_cat.pass.cpp 
@@ -9,6 +9,10 @@    // REQUIRES: locale.en_US.UTF-8  // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7    // <locale>   
diff --git a/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp index f1afff6..72d47a3 100644 --- a/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp +++ b/test/std/localization/locales/locale/locale.cons/locale_locale_cat.pass.cpp 
@@ -9,6 +9,10 @@    // REQUIRES: locale.en_US.UTF-8  // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7    // <locale>   
diff --git a/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp b/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp index eb63cd0..26ddfa6 100644 --- a/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp +++ b/test/std/localization/locales/locale/locale.cons/locale_string_cat.pass.cpp 
@@ -9,6 +9,10 @@    // REQUIRES: locale.en_US.UTF-8  // REQUIRES: locale.ru_RU.UTF-8 +// UNSUPPORTED: sanitizer-new-delete + +// XFAIL: availability_markup=macosx10.8 +// XFAIL: availability_markup=macosx10.7    // <locale>   
diff --git a/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp b/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp index 11346fb..8fc311a 100644 --- a/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp +++ b/test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp 
@@ -9,8 +9,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <locale>   
diff --git a/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp b/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp index 24644e3..4d866ac 100644 --- a/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp +++ b/test/std/numerics/complex.number/complex.ops/stream_input.pass.cpp 
@@ -7,6 +7,8 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <complex>    // template<class T, class charT, class traits> 
diff --git a/test/std/numerics/rand/rand.device/ctor.pass.cpp b/test/std/numerics/rand/rand.device/ctor.pass.cpp index 7305768..4940389 100644 --- a/test/std/numerics/rand/rand.device/ctor.pass.cpp +++ b/test/std/numerics/rand/rand.device/ctor.pass.cpp 
@@ -7,6 +7,12 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <random>    // class random_device; 
diff --git a/test/std/numerics/rand/rand.device/eval.pass.cpp b/test/std/numerics/rand/rand.device/eval.pass.cpp index 890f4ca..c6e01ac 100644 --- a/test/std/numerics/rand/rand.device/eval.pass.cpp +++ b/test/std/numerics/rand/rand.device/eval.pass.cpp 
@@ -7,6 +7,12 @@  //  //===----------------------------------------------------------------------===//   +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <random>    // class random_device; 
diff --git a/test/std/re/re.traits/translate_nocase.pass.cpp b/test/std/re/re.traits/translate_nocase.pass.cpp index ab73db7..33d365a 100644 --- a/test/std/re/re.traits/translate_nocase.pass.cpp +++ b/test/std/re/re.traits/translate_nocase.pass.cpp 
@@ -16,8 +16,8 @@    // REQUIRES: locale.en_US.UTF-8   -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // TODO: investigation needed  // XFAIL: linux-gnu 
diff --git a/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp b/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp index 59267f2..f36f53e 100644 --- a/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp +++ b/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp 
@@ -8,6 +8,12 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: libcpp-no-exceptions +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <string>    // size_type max_size() const; 
diff --git a/test/std/strings/string.conversions/stof.pass.cpp b/test/std/strings/string.conversions/stof.pass.cpp index aeef0dd..a5e5872 100644 --- a/test/std/strings/string.conversions/stof.pass.cpp +++ b/test/std/strings/string.conversions/stof.pass.cpp 
@@ -7,8 +7,9 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <string>   
diff --git a/test/std/strings/string.conversions/stol.pass.cpp b/test/std/strings/string.conversions/stol.pass.cpp index f01bbf8..5e16735 100644 --- a/test/std/strings/string.conversions/stol.pass.cpp +++ b/test/std/strings/string.conversions/stol.pass.cpp 
@@ -7,8 +7,9 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <string>   
diff --git a/test/std/strings/string.conversions/stoll.pass.cpp b/test/std/strings/string.conversions/stoll.pass.cpp index b823ab7..c33f9ee 100644 --- a/test/std/strings/string.conversions/stoll.pass.cpp +++ b/test/std/strings/string.conversions/stoll.pass.cpp 
@@ -7,8 +7,9 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <string>   
diff --git a/test/std/strings/string.conversions/stoul.pass.cpp b/test/std/strings/string.conversions/stoul.pass.cpp index 5e1f696..523c49a 100644 --- a/test/std/strings/string.conversions/stoul.pass.cpp +++ b/test/std/strings/string.conversions/stoul.pass.cpp 
@@ -7,8 +7,9 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <string>   
diff --git a/test/std/strings/string.conversions/stoull.pass.cpp b/test/std/strings/string.conversions/stoull.pass.cpp index 70563d9..549c8da 100644 --- a/test/std/strings/string.conversions/stoull.pass.cpp +++ b/test/std/strings/string.conversions/stoull.pass.cpp 
@@ -7,8 +7,9 @@  //  //===----------------------------------------------------------------------===//  // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// PR14919 was fixed in r172447, out_of_range wasn't thrown before. +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <string>   
diff --git a/test/std/thread/futures/futures.future_error/what.pass.cpp b/test/std/thread/futures/futures.future_error/what.pass.cpp index cc2d978..957d530 100644 --- a/test/std/thread/futures/futures.future_error/what.pass.cpp +++ b/test/std/thread/futures/futures.future_error/what.pass.cpp 
@@ -12,9 +12,11 @@  // LWG 2056 changed the values of future_errc, so if we're using new headers  // with an old library we'll get incorrect messages.  // -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -// XFAIL: with_system_cxx_lib=x86_64-apple-darwin13 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8    // <future>   
diff --git a/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg new file mode 100644 index 0000000..fd3dc77 --- /dev/null +++ b/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/lit.local.cfg 
@@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True 
diff --git a/test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg new file mode 100644 index 0000000..fd3dc77 --- /dev/null +++ b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.shared_mutex.requirements/lit.local.cfg 
@@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True 
diff --git a/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg new file mode 100644 index 0000000..fd3dc77 --- /dev/null +++ b/test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/lit.local.cfg 
@@ -0,0 +1,2 @@ +if 'availability' in config.available_features: + config.unsupported = True 
diff --git a/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp b/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp index 27e1d2a..f7a9186 100644 --- a/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp +++ b/test/std/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp 
@@ -9,6 +9,15 @@  //  // UNSUPPORTED: libcpp-has-no-threads   +// This test depends on signal behaviour until r210210, so some system libs +// don't pass. +// +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.8 +// XFAIL: with_system_cxx_lib=macosx10.7 +  // <thread>    // template <class Rep, class Period> @@ -23,6 +32,7 @@    void sig_action(int) {}   +#include <iostream>  int main()  {  int ec; 
diff --git a/test/std/utilities/any/any.class/any.assign/copy.pass.cpp b/test/std/utilities/any/any.class/any.assign/copy.pass.cpp index eba9bc6..37618f7 100644 --- a/test/std/utilities/any/any.class/any.assign/copy.pass.cpp +++ b/test/std/utilities/any/any.class/any.assign/copy.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // any& operator=(any const &); 
diff --git a/test/std/utilities/any/any.class/any.assign/move.pass.cpp b/test/std/utilities/any/any.class/any.assign/move.pass.cpp index 2063e4f..418f200 100644 --- a/test/std/utilities/any/any.class/any.assign/move.pass.cpp +++ b/test/std/utilities/any/any.class/any.assign/move.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // any& operator=(any &&); 
diff --git a/test/std/utilities/any/any.class/any.assign/value.pass.cpp b/test/std/utilities/any/any.class/any.assign/value.pass.cpp index 6af4817..ddedb88 100644 --- a/test/std/utilities/any/any.class/any.assign/value.pass.cpp +++ b/test/std/utilities/any/any.class/any.assign/value.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // template <class ValueType> 
diff --git a/test/std/utilities/any/any.class/any.cons/copy.pass.cpp b/test/std/utilities/any/any.class/any.cons/copy.pass.cpp index 021c9e4..aceb9e6 100644 --- a/test/std/utilities/any/any.class/any.cons/copy.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/copy.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // any(any const &); 
diff --git a/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp b/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp index 4cf5d91..d01a88d 100644 --- a/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // template <class T, class ...Args> any(in_place_type_t<T>, Args&&...); 
diff --git a/test/std/utilities/any/any.class/any.cons/move.pass.cpp b/test/std/utilities/any/any.class/any.cons/move.pass.cpp index fb7dda8..09e9288 100644 --- a/test/std/utilities/any/any.class/any.cons/move.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/move.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // any(any &&) noexcept; 
diff --git a/test/std/utilities/any/any.class/any.cons/value.pass.cpp b/test/std/utilities/any/any.class/any.cons/value.pass.cpp index a164fbe..d18de06 100644 --- a/test/std/utilities/any/any.class/any.cons/value.pass.cpp +++ b/test/std/utilities/any/any.class/any.cons/value.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // template <class Value> any(Value &&) @@ -151,4 +158,4 @@  test_copy_value_throws<large_throws_on_copy>();  test_move_value_throws();  test_sfinae_constraints(); -} \ No newline at end of file +} 
diff --git a/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp b/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp index 7ed6121..789a861 100644 --- a/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp +++ b/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // template <class T, class ...Args> T& emplace(Args&&...); 
diff --git a/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp b/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp index 45bc70f..2e781d9 100644 --- a/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp +++ b/test/std/utilities/any/any.class/any.modifiers/reset.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // any::reset() noexcept 
diff --git a/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp b/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp index 6fc1009..f56a256 100644 --- a/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp +++ b/test/std/utilities/any/any.class/any.modifiers/swap.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // any::swap(any &) noexcept 
diff --git a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp index 1a5a854..a5fa932 100644 --- a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_pointer.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // template <class ValueType> 
diff --git a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp index af081ec..ed04a91 100644 --- a/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // template <class ValueType> 
diff --git a/test/std/utilities/any/any.nonmembers/make_any.pass.cpp b/test/std/utilities/any/any.nonmembers/make_any.pass.cpp index 59c06be..5a4a3c3 100644 --- a/test/std/utilities/any/any.nonmembers/make_any.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/make_any.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // template <class T, class ...Args> any make_any(Args&&...); 
diff --git a/test/std/utilities/any/any.nonmembers/swap.pass.cpp b/test/std/utilities/any/any.nonmembers/swap.pass.cpp index 1b3785b..c723b6e 100644 --- a/test/std/utilities/any/any.nonmembers/swap.pass.cpp +++ b/test/std/utilities/any/any.nonmembers/swap.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <any>    // void swap(any &, any &) noexcept 
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp index d1e1313..4b56a8f 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp index 08e31e8..065a7e9 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp index f8f550d..2351e97 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp index 1ea11ce..e36c8a5 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp index 9a5792f..f1fe28c 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp index aac9af0..45cbc50 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp index fa79e7c..b51c6cf 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp index c650899..9f3617a 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp index cbcc4dd..5ae2680 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp index eb5e246..ecba90b 100644 --- a/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp +++ b/test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp 
@@ -11,8 +11,8 @@  //  // This test uses new symbols that were not defined in the libc++ shipped on  // darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 +// XFAIL: availability=macosx10.7 +// XFAIL: availability=macosx10.8    // <memory>   
diff --git a/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp b/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp index e3c7bb5..198eee6 100644 --- a/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp +++ b/test/std/utilities/optional/optional.bad_optional_access/default.pass.cpp 
@@ -9,6 +9,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // class bad_optional_access is default constructible 
diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp index d068fbc..e4e4a97 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp 
@@ -9,6 +9,13 @@  //  // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // template <class U> 
diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp index 34a12b8..e9e98c0 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/const_T.pass.cpp 
@@ -9,6 +9,13 @@  //  // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // constexpr optional(const T& v); 
diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp index bff6f5b..9f23e9b 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp 
@@ -8,6 +8,14 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // optional(optional<T>&& rhs); 
diff --git a/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp index eee749d..761cbee 100644 --- a/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.ctor/rvalue_T.pass.cpp 
@@ -9,6 +9,13 @@  //  // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // constexpr optional(T&& v); 
diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp index 516a79d..44e6e73 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value.pass.cpp 
@@ -8,6 +8,14 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // constexpr T& optional<T>::value() &; 
diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp index d4038e4..e2d48ec 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp 
@@ -8,6 +8,14 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // constexpr const T& optional<T>::value() const &; 
diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp index e189d3a..874a544 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp 
@@ -8,6 +8,14 @@  //===----------------------------------------------------------------------===//    // UNSUPPORTED: c++98, c++03, c++11, c++14 + +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <optional>    // constexpr const T& optional<T>::value() const &&; 
diff --git a/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp b/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp index 2ef485b..60cab7d 100644 --- a/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp +++ b/test/std/utilities/optional/optional.object/optional.object.observe/value_rvalue.pass.cpp 
@@ -10,6 +10,13 @@  // UNSUPPORTED: c++98, c++03, c++11, c++14  // <optional>   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // constexpr T& optional<T>::value() &&;    #include <optional> 
diff --git a/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp b/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp index bf2a2e5..24847dd 100644 --- a/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp +++ b/test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp 
@@ -7,15 +7,15 @@  //  //===----------------------------------------------------------------------===//  // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -  // Due to C++17 inline variables ASAN flags this test as containing an ODR  // violation because Clock::is_steady is defined in both the dylib and this TU.  // UNSUPPORTED: asan   +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +  // <chrono>    // high_resolution_clock 
diff --git a/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp b/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp index b836c0d..cdb38df 100644 --- a/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp +++ b/test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp 
@@ -7,16 +7,17 @@  //  //===----------------------------------------------------------------------===//  // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8  // UNSUPPORTED: libcpp-has-no-monotonic-clock    // Due to C++17 inline variables ASAN flags this test as containing an ODR  // violation because Clock::is_steady is defined in both the dylib and this TU.  // UNSUPPORTED: asan   +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +  // <chrono>    // steady_clock 
diff --git a/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp b/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp index a4058e5..dfc08a3 100644 --- a/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp +++ b/test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp 
@@ -7,15 +7,15 @@  //  //===----------------------------------------------------------------------===//  // -// This test uses new symbols that were not defined in the libc++ shipped on -// darwin11 and darwin12: -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.7 -// XFAIL: with_system_cxx_lib=x86_64-apple-macosx10.8 -  // Due to C++17 inline variables ASAN flags this test as containing an ODR  // violation because Clock::is_steady is defined in both the dylib and this TU.  // UNSUPPORTED: asan   +// Starting with C++17, Clock::is_steady is inlined (but not before LLVM-3.9!), +// but before C++17 it requires the symbol to be present in the dylib. +// XFAIL: availability=macosx10.7 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +// XFAIL: availability=macosx10.8 && (c++98 || c++03 || c++11 || c++14 || apple-clang-7 || apple-clang-8.0) +  // <chrono>    // system_clock 
diff --git a/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp b/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp index 77fd171..5b0f15e 100644 --- a/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp +++ b/test/std/utilities/variant/variant.bad_variant_access/bad_variant_access.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    /* 
diff --git a/test/std/utilities/variant/variant.get/get_index.pass.cpp b/test/std/utilities/variant/variant.get/get_index.pass.cpp index bc7a566..4f04f4a 100644 --- a/test/std/utilities/variant/variant.get/get_index.pass.cpp +++ b/test/std/utilities/variant/variant.get/get_index.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <size_t I, class... Types> 
diff --git a/test/std/utilities/variant/variant.get/get_type.pass.cpp b/test/std/utilities/variant/variant.get/get_type.pass.cpp index 013a081..63221f6 100644 --- a/test/std/utilities/variant/variant.get/get_type.pass.cpp +++ b/test/std/utilities/variant/variant.get/get_type.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class T, class... Types> constexpr T& get(variant<Types...>& v); 
diff --git a/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp index 10022b1..dd5880e 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/T.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp index d92f16f..4f0009d 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp b/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp index 232d77c..c1ba87b 100644 --- a/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.assign/move.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp index d7c28e8..a695df1 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp index a4a86ff..05a09db 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/default.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp index 1811572..af6c662 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_index_args.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp index a023f02..ec2730e 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/in_place_type_args.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp b/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp index f540908..b8ca6f9 100644 --- a/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp index 0d0b978..20848db 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_args.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp index e69988a..28a0c58 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_index_init_list_args.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp index 8e32902..923ffd3 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_args.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp index da1658c..c01d333 100644 --- a/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.mod/emplace_type_init_list_args.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp b/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp index 48cda22..b81b3ff 100644 --- a/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp +++ b/test/std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>    // template <class ...Types> class variant; 
diff --git a/test/std/utilities/variant/variant.visit/visit.pass.cpp b/test/std/utilities/variant/variant.visit/visit.pass.cpp index 408a65c..05b58c1 100644 --- a/test/std/utilities/variant/variant.visit/visit.pass.cpp +++ b/test/std/utilities/variant/variant.visit/visit.pass.cpp 
@@ -10,6 +10,13 @@    // UNSUPPORTED: c++98, c++03, c++11, c++14   +// XFAIL: with_system_cxx_lib=macosx10.12 +// XFAIL: with_system_cxx_lib=macosx10.11 +// XFAIL: with_system_cxx_lib=macosx10.10 +// XFAIL: with_system_cxx_lib=macosx10.9 +// XFAIL: with_system_cxx_lib=macosx10.7 +// XFAIL: with_system_cxx_lib=macosx10.8 +  // <variant>  // template <class Visitor, class... Variants>  // constexpr see below visit(Visitor&& vis, Variants&&... vars); 
diff --git a/utils/libcxx/test/config.py b/utils/libcxx/test/config.py index f839a3a..7f1ae85 100644 --- a/utils/libcxx/test/config.py +++ b/utils/libcxx/test/config.py 
@@ -123,6 +123,7 @@  self.configure_cxx()  self.configure_triple()  self.configure_deployment() + self.configure_availability()  self.configure_src_root()  self.configure_obj_root()  self.configure_cxx_stdlib_under_test() @@ -285,6 +286,12 @@  self.lit_config.note(  "inferred use_system_cxx_lib as: %r" % self.use_system_cxx_lib)   + def configure_availability(self): + # See http://llvm.org/docs/AvailabilityMarkup.html + self.with_availability = self.get_lit_bool('with_availability', False) + self.lit_config.note( + "inferred with_availability as: %r" % self.with_availability) +  def configure_cxx_stdlib_under_test(self):  self.cxx_stdlib_under_test = self.get_lit_conf(  'cxx_stdlib_under_test', 'libc++') @@ -306,6 +313,9 @@    def configure_use_clang_verify(self):  '''If set, run clang with -verify on failing tests.''' + if self.with_availability: + self.use_clang_verify = False + return  self.use_clang_verify = self.get_lit_bool('use_clang_verify')  if self.use_clang_verify is None:  # NOTE: We do not test for the -verify flag directly because @@ -346,6 +356,12 @@  self.cxx.use_ccache = True  self.lit_config.note('enabling ccache')   + def add_deployment_feature(self, feature): + (arch, name, version) = self.config.deployment + self.config.available_features.add('%s=%s-%s' % (feature, arch, name)) + self.config.available_features.add('%s=%s' % (feature, name)) + self.config.available_features.add('%s=%s%s' % (feature, name, version)) +  def configure_features(self):  additional_features = self.get_lit_conf('additional_features')  if additional_features: @@ -364,16 +380,32 @@  self.config.available_features.add(  'with_system_cxx_lib=%s' % self.config.target_triple)   + # Add subcomponents individually. + target_components = self.config.target_triple.split('-') + for component in target_components: + self.config.available_features.add( + 'with_system_cxx_lib=%s' % component) + + # Add available features for more generic versions of the target + # triple attached to with_system_cxx_lib. + if self.use_deployment: + self.add_deployment_feature('with_system_cxx_lib') + + # Configure the availability markup checks features. + if self.with_availability: + self.config.available_features.add('availability_markup') + self.add_deployment_feature('availability_markup') + + if self.use_system_cxx_lib or self.with_availability: + self.config.available_features.add('availability') + self.add_deployment_feature('availability') + + if platform.system() == 'Darwin': + self.config.available_features.add('apple-darwin') +  # Insert the platform name into the available features as a lower case.  self.config.available_features.add(target_platform)   - # If we're using deployment, add sub-components of the triple using - # "darwin" instead of the platform name. - if self.use_deployment: - arch, _, _ = self.config.deployment - self.config.available_features.add('apple-darwin') - self.config.available_features.add(arch + '-apple-darwin') -  # Simulator testing can take a really long time for some of these tests  # so add a feature check so we can REQUIRES: long_tests in them  self.long_tests = self.get_lit_bool('long_tests') @@ -508,6 +540,10 @@  self.cxx.flags += ['-arch', arch]  self.cxx.flags += ['-m' + name + '-version-min=' + version]   + # Disable availability unless explicitely requested + if not self.with_availability: + self.cxx.flags += ['-D_LIBCPP_DISABLE_AVAILABILITY'] +  def configure_compile_flags_header_includes(self):  support_path = os.path.join(self.libcxx_src_root, 'test', 'support')  if self.cxx_stdlib_under_test != 'libstdc++' and \